package dto

// GetMenuReq
type GetMenuReq struct {
	ID int32 `form:"id" json:"id" validate:"required"`
}

// DeleteMenuReq
type DeleteMenuReq struct {
	ID int32 `form:"id" json:"id" validate:"required"`
}

type CreateMenuReq struct {
	Pid         int32  `json:"pid" form:"pid"`
	Title       string `json:"title" form:"title" validate:"required"`
	Type        int8   `json:"type" form:"type" validate:"required"`
	Icon        string `json:"icon" form:"icon"`
	Href        string `json:"href" form:"href"`
	Target      string `json:"target" form:"target"`
	ApiMethod   string `json:"apiMethod" form:"apiMethod"`
	ApiUrl      string `json:"apiUrl" form:"apiUrl"`
	ApiAuthCode string `json:"apiAuthCode" form:"apiAuthCode"`
	Sort        int8   `json:"sort" form:"sort"`
	Remark      string `json:"remark" form:"remark"`
}

type UpdateMenuReq struct {
	Id          int32  `json:"id" form:"id" validate:"required"`
	Pid         int32  `json:"pid" form:"pid"`
	Title       string `json:"title" form:"title" validate:"required"`
	Type        int8   `json:"type" form:"type"`
	Icon        string `json:"icon" form:"icon"`
	Href        string `json:"href" form:"href"`
	Target      string `json:"target" form:"target"`
	ApiMethod   string `json:"apiMethod" form:"apiMethod"`
	ApiUrl      string `json:"apiUrl" form:"apiUrl"`
	ApiAuthCode string `json:"apiAuthCode" form:"apiAuthCode"`
	Sort        int8   `json:"sort" form:"sort"`
	Remark      string `json:"remark" form:"remark"`
}

type Auth struct {
	Title    string `json:"title"`
	AuthMark string `json:"authMark"`
}

// RouteMeta 路由元数据装好成go结构体
type RouteMeta struct {
	/** 路由标题 */
	Title string `json:"title,omitempty"`
	/** 路由图标 */
	Icon string `json:"icon,omitempty"`
	/** 是否显示徽章 */
	ShowBadge bool `json:"showBadge,omitempty"`
	/** 文本徽章 */
	ShowTextBadge string `json:"showTextBadge,omitempty"`
	/** 是否在菜单中隐藏 */
	IsHide bool `json:"isHide,omitempty"`
	/** 是否在标签页中隐藏 */
	IsHideTab bool `json:"isHideTab,omitempty"`
	/** 外部链接 */
	Link string `json:"link,omitempty"`
	/** 是否为iframe */
	IsIframe bool `json:"isIframe,omitempty"`
	/** 是否缓存 */
	KeepAlive bool `json:"keepAlive,omitempty"`
	/** 操作权限 */
	AuthList []*Auth `json:"authList,omitempty"`
	/** 是否为一级菜单 */
	IsFirstLevel bool `json:"isFirstLevel,omitempty"`
	/** 角色权限 */
	Roles []string `json:"roles,omitempty"`
	/** 是否固定标签页 */
	FixedTab bool `json:"fixedTab,omitempty"`
	/** 激活菜单路径 */
	ActivePath string `json:"activePath,omitempty"`
	/** 是否为全屏页面 */
	IsFullPage bool `json:"isFullPage,omitempty"`
	/** 是否为权限按钮行 */
	IsAuthButton bool `json:"isAuthButton,omitempty"`
	/** 权限标识 */
	AuthMark string `json:"authMark,omitempty"`
	/** 父级路径 */
	ParentPath string `json:"parentPath,omitempty"`
}

type ListTreeMenuResp struct {
	Id        int32               `json:"id,omitempty"`
	Name      string              `json:"name,omitempty"`
	Path      string              `json:"path,omitempty"`
	Component string              `json:"component,omitempty"`
	Meta      RouteMeta           `json:"meta,omitempty"`
	Children  []*ListTreeMenuResp `json:"children,omitempty"`
}
